package com.CST.service.ys;

import com.CST.common.api.ResultObject;
import com.CST.dto.ys.YsSubjectDTO;
import com.CST.entity.ys.YsSubject;
import com.CST.vo.ys.DeptVO;
import com.CST.vo.ys.YsSubjectListVO;
import com.CST.vo.ys.YsSubjectVO;
import com.CST.vo.ys.YySubjectVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author qtx
 * @since 2023-04-23
 */
public interface YsSubjectService extends IService<YsSubject> {

    /**
     * 预算科目查询
     *
     * @param dto 查询条件
     * @return 分页集合
     */
    IPage<YsSubjectVO> listYsSubjectPage(YsSubjectDTO dto);

    /**
     * 新增或编辑
     *
     * @param entity 实体
     * @return true or false
     */
    boolean saveOrUpdateYsSubject(YsSubject entity);

    /**
     * 层级查询
     *
     * @return 集合
     */
    List<YsSubjectVO> listYsSubjectTree();

    /**
     * 末级节点查询
     *
     * @return 集合
     */
    List<YsSubjectListVO> listYsSubject();

    List<YsSubjectListVO> listYsSubject1(String name);
    List<YsSubjectListVO> listYsSubject2(String name);
    List<YsSubjectListVO> listYsSubject3(String name);
    List<YsSubjectListVO> listYsSubject4(String name);
    List<YsSubjectListVO> listYsSubject5(String name);

    /**
     * 用友数据下拉
     * @param year 年
     * @param name 名称
     * @return 集合
     */
    List<YySubjectVO> listYySubject(String year, String name);

    /**
     * 删除预算科目
     *
     * @param id 预算科目id
     * @return true or false
     */
    boolean removeYsSubjectById(Long id);

    /**
     * 导入数据
     *
     * @param file 文件
     */
    void importExcelYsSubject(MultipartFile file);

    /**
     * 导出数据
     *
     * @param response response
     */
    void exportExcelYsSubject(HttpServletResponse response);

    /**
     * 导出模板
     *
     * @param response response
     */
    void exportExcelYsSubjectDemo(HttpServletResponse response);

    List<DeptVO> listManageDept(Long subjectId);

    ResultObject<String> getExistingRelationship(YsSubject entity);
}
